/* USER CODE BEGIN Header */
/**
  ******************************************************************************
  * File Name          : anotcFlow.hpp
  * Description        : 
  ******************************************************************************
  * Function           :
  *
  ******************************************************************************
  * Author             : Zhiping Fu
  * Creation Date      : 2020年11月23日
  ******************************************************************************
  */
/* USER CODE END Header */

#ifndef __TRAN2MAV_HPP
#define __TRAN2MAV_HPP


#include "userlib/userlib.hpp"
#include "system/system.hpp"

#ifdef __cplusplus
extern "C" {
#endif

#define TRAN2MAV_RX_LEN 60
#define TRAN2MAV_TX_LEN 60

void USART1_IRQHandler(void);
void DMA2_Stream5_IRQHandler(void);		//接收DMA中断服务函数
void DMA2_Stream7_IRQHandler(void);		//发送DMA中断服务函数

#ifdef __cplusplus
}
#endif


#ifdef __cplusplus

using namespace std;

class TRAN2MAV
{
public:
	TRAN2MAV(){}
	TRAN2MAV(USART_TypeDef * h,char * n) : huart(h),name(n){}
	~TRAN2MAV(){}

	void tran2MAV_Init(void);
	void tran2MAV_Update(void);
	bool uart_Send_User(void);
	bool uart_Send_DMA(uint8_t * pData,uint16_t Size);
	HAL_LockTypeDef LockRx;
	bool  RxFlag;		//接收标志位
	uint16_t   RxDataSize;
	uint8_t RxRawDat[TRAN2MAV_RX_LEN];   //数据
	char RxDat[TRAN2MAV_RX_LEN];

	bool TxFlag;
	u8 TxHead;
	u8 TxSum;
	u8 TxAdd;
	u8 TxDat[TRAN2MAV_TX_LEN];

private:
	USART_TypeDef * huart;
	char *name;
	uint8_t RxSum;

	uint8_t mode;
	uint8_t state;

	uint32_t  startTimer;			//计时器
	uint32_t  stopTimer;			//计时器
	uint32_t  executionTime_us;			//计时器

	uint32_t  startTimerLast;			//计时器
	uint32_t  cycleTime_us;

	//用户数据
	bool  Update;		//更新  --
	eSTA  Sta;			//状态  --
	eERR  Err;			//错误信息  --

	magraw_msg magraw;
	slam_msg slam;
};



#endif



#endif


/************************ (C) COPYRIGHT Longmen Drone Team *****END OF FILE****/
